package string.ReverseStr;

/**
 * @ClassName ReverseString2
 * @Description TODO
 * @Author lenovo
 * @Date 2023-02-21 20:42
 * @Version 1.0
 * @Comment Magic. Do not touch.
 * If this comment is removed. the program will blow up
 */
public class ReverseString2 {

    /**
     * 给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
     * <p>
     * 如果剩余字符少于 k 个，则将剩余字符全部反转。
     * 如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
     *  
     * <p>
     * 示例 1：
     * <p>
     * 输入：s = "abcdefg", k = 2
     * 输出："bacdfeg"
     * 示例 2：
     * <p>
     * 输入：s = "abcd", k = 2
     * 输出："bacd"
     * <p>
     */


    public String reverseStr(String s, int k) {

        char[] chars = s.toCharArray();

        for (int i = 0; i < chars.length; i += 2 * k) {

            int start = i;
            int end = Math.min(chars.length - 1, i + k - 1);

            for (int j = start, l = end; j < end; j++, l--) {
                char temp = chars[j];
                chars[j] = chars[l];
                chars[l] = temp;
            }
        }

        return new String(chars);
    }

    public static void main(String[] args) {
        ReverseString2 reverseString2 = new ReverseString2();
        System.out.println(reverseString2.reverseStr("abcdef", 2));
    }
}